package qualomelhor.util;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.security.*;

import qualomelhor.database.TermoIdioma;
import qualomelhor.server.DAO;

public class Util {

	private static HashMap<String, String> mapTerm = new HashMap<String, String>(0);
	static {
		//term, locale
		mapTerm.put("A melhor forma de fazer comparações ou pesquisas rápidas, eficientes e divertidas no seu site ou blog!_en", "The best way to make comparisons or surveys fast, efficient and fun to your site or blog!");
		mapTerm.put("A melhor forma de fazer comparações rápidas e divertidas!_en", "The best way to make quick comparisons!");
		mapTerm.put("Bem vindo ao QUAL O MELHOR._en", "Welcome to WHICH IS BETTER.");
		mapTerm.put("Categorias_en", "Categories");
		mapTerm.put("Comparar 2 Itens_en", "Compare 2 Items");
		mapTerm.put("Comparar 3 Itens ou Mais_en", "Compare 3 Items or More");
		mapTerm.put("Compartilhe nas redes sociais para saber a opinião dos seus amigos!_en", "Share on social networks to get the opinion of your friends!");
		mapTerm.put("Compartilhe no seu site / blog e ganhe um link de volta!_en", "Share on your site / blog and get a link back!");
		mapTerm.put("Crie comparações rápidas, eficientes e divertidas!_en", "Create quick comparisons, efficient and fun!");
		mapTerm.put("Faça comparações ou pesquisas para promover seu site ou blog!_en", "Make comparisons and surveys to promote your site or blog!");
		mapTerm.put("Idioma:_en", "Language:");
		mapTerm.put("Opinião Sobre 1 Item_en", "Opinion About 1 Item");
		mapTerm.put("Seja bem vindo ao Qual o Melhor!_en", "Welcome to Which is Better!");
		mapTerm.put("Votar neste_en", "Vote this");
		mapTerm.put("beleza_en", "beauty");
		mapTerm.put("capacidade_en", "capacity");
		mapTerm.put("comentário(s)_en", "comment(s)");
		mapTerm.put("contato_en", "contact");
		mapTerm.put("fazer_en", "make");
		mapTerm.put("forma_en", "way");
		mapTerm.put("habilidade_en", "ability");
		mapTerm.put("mapa do site_en", "site map");
		mapTerm.put("melhor_en", "better");
		mapTerm.put("metodo_en", "method");
		mapTerm.put("pessoas_en", "people");
		mapTerm.put("produto_en", "product");
		mapTerm.put("qual_en", "which");
		mapTerm.put("quem_en", "who");
		mapTerm.put("quem somos_en", "who are we");
		mapTerm.put("tecnica_en", "technique");
		mapTerm.put("Últimas comparações:_en", "Latest comparisons:");
		mapTerm.put("A melhor forma de fazer comparações rápidas e divertidas!_en_GB", "The best way to make quick comparisons!");
		mapTerm.put("Aguarde! Enviando..._en_GB", "Wait! Sending ...");
		mapTerm.put("Bem vindo ao QUAL O MELHOR._en_GB", "Welcome to WHICH IS BETTER.");
		mapTerm.put("Categorias_en_GB", "Categories");
		mapTerm.put("Clique e deixe seu voto / opinião sobre _en_GB", "Click and leave your vote / opinion ");
		mapTerm.put("Comentários_en_GB", "Comments");
		mapTerm.put("Comparar 2 Itens_en_GB", "Compare 2 Items");
		mapTerm.put("Comparar 3 Itens ou Mais_en_GB", "Compare 3 Items or More");
		mapTerm.put("Compartilhe nas redes sociais para saber a opinião dos seus amigos!_en_GB", "Share on social networks to get the opinion of your friends!");
		mapTerm.put("Compartilhe no seu site / blog e ganhe um link de volta!_en_GB", "Share on your site / blog and get a link back!");
		mapTerm.put("Criado Por_en_GB", "Created by");
		mapTerm.put("Crie comparações rápidas, eficientes e divertidas!_en_GB", "Create quick comparisons, efficient and fun!");
		mapTerm.put("Facebook Login_en_GB", "Facebook Login");
		mapTerm.put("Idioma:_en_GB", "Language:");
		mapTerm.put("Ocorreu um erro ao postar o comentário. Lamentamos o inconveniente._en_GB", "There was an error posting your comment. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar seu voto. Lamentamos o inconveniente._en_GB", "There was an error posting your vote. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar sua comparação. Lamentamos o inconveniente._en_GB", "There was an error posting your comparison. Sorry for the inconvenience.");
		mapTerm.put("Opinião Sobre 1 Item_en_GB", "Opinion About 1 Item");
		mapTerm.put("Resposta adicionada. Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_GB", "Answer added. Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("Seja bem vindo ao Qual o Melhor!_en_GB", "Welcome to Which is Better!");
		mapTerm.put("Seu voto foi deletado! Você pode refazer o seu voto agora! Obrigado por participar!_en_GB", "Your vote has been deleted! You can redo your vote now! Thanks for participating!");
		mapTerm.put("Seu voto já foi computado. Efetue o login para alterar seu voto!_en_GB", "Your vote has been counted. Log in to change your vote!");
		mapTerm.put("Sua comparação foi criada! Compartilhe nas redes sociais e tenha a resposta rapidamente!_en_GB", "Your comparison was created! Share on social networks and get the answer quickly!");
		mapTerm.put("Votar neste_en_GB", "Vote this");
		mapTerm.put("Vote e comente!_en_GB", "Vote and comment!");
		mapTerm.put("Voto adicionado! Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_GB", "Vote added! Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("Voto foi alterado! Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_GB", "Voting was changed! Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("comentário(s)_en_GB", "comment(s)");
		mapTerm.put("contato_en_GB", "contact");
		mapTerm.put("de_en_GB", "of");
		mapTerm.put("mapa do site_en_GB", "site map");
		mapTerm.put("votos anonimos_en_GB", "anonymous votes");
		mapTerm.put("É necessário autorizar o aplicativo para poder postar este evento no facebook!_en_GB", "It is necessary to authorize the app to post this event on facebook!");
		mapTerm.put("É necessário estar logado no facebook para para poder postar este evento!_en_GB", "You must be logged in to facebook to post this event!");
		mapTerm.put("Últimas comparações:_en_GB", "Latest comparisons:");
		mapTerm.put(". Vote deixe sua opinião a respeito._en_US", ". Vote and leave your opinion about.");
		mapTerm.put("A melhor forma de fazer comparações ou pesquisas rápidas, eficientes e divertidas no seu site ou blog!_en_US", "The best way to make comparisons or surveys fast, efficient and fun to your site or blog!");
		mapTerm.put("A melhor forma de fazer comparações rápidas e divertidas!_en_US", "The best way to make comparisons quick and fun!");
		mapTerm.put("Aguarde! Enviando..._en_US", "Wait! Sending ...");
		mapTerm.put("Bem vindo ao QUAL O MELHOR._en_US", "Welcome to WHICH IS THE BETTER.");
		mapTerm.put("Categorias_en_US", "Categories");
		mapTerm.put("Clique e deixe seu voto / opinião sobre _en_US", "Click and leave your vote / opinion ");
		mapTerm.put("Comentários_en_US", "Comments");
		mapTerm.put("Comentários a favor de _en_US", "Comments in favor of ");
		mapTerm.put("Comparar 2 Itens_en_US", "Compare 2 Items");
		mapTerm.put("Comparar 2 Itens_en_US", "Compare 2 Items");
		mapTerm.put("Comparar 2 itens_en_US", "Compare 2 items");
		mapTerm.put("Comparar 3 Itens ou Mais_en_US", "Compare 3 Items or More");
		mapTerm.put("Compare _en_US", "Compare ");
		mapTerm.put("Compartilhe esta comparação na sua rede social e saiba rapidamente o que seus amigos acham!_en_US", "Share this comparison in your social network and find out quickly what your friends think!");
		mapTerm.put("Compartilhe nas redes sociais para saber a opinião dos seus amigos!_en_US", "Share on social networks to get the opinion of your friends!");
		mapTerm.put("Compartilhe no seu site / blog e ganhe um link de volta!_en_US", "Share on your site / blog and get a link back!");
		mapTerm.put("Contato_en_US", "Contact");
		mapTerm.put("Criado Por_en_US", "Created by");
		mapTerm.put("Crie comparações rápidas, eficientes e divertidas!_en_US", "Create quick comparisons, efficient and fun!");
		mapTerm.put("Crie sua comparação com este item_en_US", "Create your comparison with this item");
		mapTerm.put("Crie suas próprias comparações para promover seu blog ou site!_en_US", "Create your own comparisons to promote your blog or website!");
		mapTerm.put("Erro:_en_US", "Error:");
		mapTerm.put("Escolha a categoria_en_US", "Choose a category");
		mapTerm.put("Escolha a categoria:_en_US", "Choose a category:");
		mapTerm.put("Esta comparação foi postada no seu facebook! Enquanto isso, talvez você queira opinar nas seguites comparações abaixo:_en_US", "This comparison was posted on your facebook! Meanwhile, you might want to opine on seguites comparisons below:");
		mapTerm.put("Esta comparação foi postada no seu facebook! Obrigado por participar!_en_US", "This comparison was posted on your facebook! Thanks for participating!");
		mapTerm.put("Faça comparações ou pesquisas para promover seu site ou blog!_en_US", "Make comparisons and surveys to promote your site or blog!");
		mapTerm.put("Idioma:_en_US", "Language:");
		mapTerm.put("Item não encontrado. Lamentamos o inconveniente._en_US", "Item not found. Sorry for the inconvenience.");
		mapTerm.put("Logar com:_en_US", "Log in with:");
		mapTerm.put("Ocorreu um erro ao postar esta ação. Lamentamos o inconveniente._en_US", "An error occurred while posting this action. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar o comentário. Lamentamos o inconveniente._en_US", "There was an error posting your comment. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar seu voto. Lamentamos o inconveniente._en_US", "There was an error posting your vote. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar sua comparação. Lamentamos o inconveniente._en_US", "There was an error posting your comparison. Sorry for the inconvenience.");
		mapTerm.put("Ocorreu um erro ao postar sua comparação: _en_US", "There was an error posting your comparison:");
		mapTerm.put("Opinião Sobre 1 Item_en_US", "Opinion About 1 Item");
		mapTerm.put("Opiniões sobre _en_US", "Comments about ");
		mapTerm.put("Opps.. Você já votou, mas não foi possível localizar seu voto para edição! Lamentamos o inconveniente!_en_US", "Ops .. You have already voted, but can not be found to edit your vote! Sorry for the inconvenience!");
		mapTerm.put("Página não encontrada. Lamentamos o inconveniente._en_US", "Page not found. Sorry for the inconvenience.");
		mapTerm.put("Resposta adicionada. Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_US", "Answer added. Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("Saiba sobre_en_US", "Learn about");
		mapTerm.put("Seja bem vindo ao Qual o Melhor!_en_US", "Welcome to Which is Better!");
		mapTerm.put("Seu browser não possui capacidade sufiente para exibir este site! Que tal atualizar para as versões mais modernas?_en_US", "Your browser does not have enough capabilities to view this site! What about upgrade to the latest versions?");
		mapTerm.put("Seu comentário foi incluído no facebook! Obrigado por participar!_en_US", "Your comment has been included on facebook! Thanks for participating!");
		mapTerm.put("Seu voto foi deletado! Você pode refazer o seu voto agora! Obrigado por participar!_en_US", "Your vote has been deleted! You can redo your vote now! Thanks for participating!");
		mapTerm.put("Seu voto já foi computado. Efetue o login para alterar seu voto!_en_US", "Your vote has been counted. Log in to change your vote!");
		mapTerm.put("Sua comparação foi criada! Compartilhe nas redes sociais e tenha a resposta rapidamente!_en_US", "Your comparison was created! Share on social networks and get the answer quickly!");
		mapTerm.put("Ultimas comparações deste produto_en_US", "Latest comparisons of this product");
		mapTerm.put("Voltar_en_US", "Back");
		mapTerm.put("Votar neste_en_US", "Vote this");
		mapTerm.put("Vote deixe sua opinião a respeito!_en_US", "Vote leave your opinion about it!");
		mapTerm.put("Vote e comente!_en_US", "Vote and comment!");
		mapTerm.put("Vote e deixe seu comentário!_en_US", "Vote and leave your comments!");
		mapTerm.put("Voto adicionado! Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_US", "Vote added! Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("Voto foi alterado! Obrigado por participar! Compartilhe na sua rede social e saiba a opinião dos seus amigos! Compartilhe no seu blog e ganhe um link de volta!_en_US", "Voting was changed! Thanks for participating! Share in your social network and know the opinion of your friends! Share on your blog and get a link back!");
		mapTerm.put("beleza_en_US", "beauty");
		mapTerm.put("capacidade_en_US", "capacity");
		mapTerm.put("com outros itens!_en_US", "with other items!");
		mapTerm.put("comentário(s)_en_US", "comment(s)");
		mapTerm.put("comparação_en_US", "comparison");
		mapTerm.put("contato_en_US", "contact");
		mapTerm.put("contato_en_US", "contact");
		mapTerm.put("de_en_US", "of");
		mapTerm.put("fazer_en_US", "make");
		mapTerm.put("forma_en_US", "way");
		mapTerm.put("habilidade_en_US", "ability");
		mapTerm.put("mapa do site_en_US", "site map");
		mapTerm.put("mapa do site_en_US", "site map");
		mapTerm.put("melhor_en_US", "better");
		mapTerm.put("metodo_en_US", "method");
		mapTerm.put("ou_en_US", "or");
		mapTerm.put("pessoas_en_US", "people");
		mapTerm.put("produto_en_US", "product");
		mapTerm.put("qual_en_US", "which");
		mapTerm.put("qual o melhor_en_US", "which is better");
		mapTerm.put("quem_en_US", "who");
		mapTerm.put("tecnica_en_US", "technique");
		mapTerm.put("votos anonimos_en_US", "anonymous votes");
		mapTerm.put("É necessário autorizar a publicação de ações para para poder postar este evento no seu facebook!_en_US", "It is necessary to authorize the publication of actions to be able to post this event on your facebook!");
		mapTerm.put("É necessário autorizar o aplicativo para poder postar este evento no facebook!_en_US", "It is necessary to authorize the app to post this event on facebook!");
		mapTerm.put("É necessário estar logado no facebook para para poder postar este evento!_en_US", "You must be logged in to facebook to post this event!");
		mapTerm.put("Últimas comparações:_en_US", "Latest comparisons:");
		mapTerm.put("quem somos_zh_CN", "?????");
	}

    public static String getConstant(String term, String locale) {
    	//System.out.println("procurando termo_locale = [" + term + "_" + locale + "], size:" + mapTerm.size());
    	String result = mapTerm.get(term + "_" + locale);
    	//System.out.println("result = " + result);   	
    	if (result == null) {
    		if (!locale.equals("pt-BR") && !locale.equals("pt_BR")) {
	        	DAO d = new DAO();
	        	if (d.getTermoIdioma(term, locale) == null) {
	        		d.gravaNovoTermoIdioma(new TermoIdioma(term, locale, ""));
	        		//System.out.println("gravou o termo que nao havia!");
	        	}
    		}
    		result = term;
    	}
    	return result;
    }

	public static String converteEmLink(String texto) {
		String txt = removeAcentuacao(texto);
		txt = txt.replaceAll(" ", "-");
		txt = removeCaracteresInvalidos(txt);
		txt = txt.replaceAll("[\\-\\-]+", "-");
		//System.out.println("link parcial:[" + txt + "]");
		//System.out.println("txt.char1:[" + txt.charAt(0) + "]");
		if (txt.charAt(0) == '-') {
			txt = txt.substring(1);
		}
		//System.out.println("link parcial:[" + txt + "]");
		return txt;
	}

    public static String removeCaracteresInvalidos(String text) {
        String result = text.replaceAll("[^0-9a-zA-Z-_]+", "");
        //System.out.println("result removeCaracteresInvalidos:[" + result + "]");
        return result;    	
    }

	public static String converteEmTexto(String link) {
		return link.replaceAll("-", " ").replaceAll("_", "-");
	}
	
	public static boolean isNumeric(String texto) {
		return texto.matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+"); 
	}
	
	public static int contarCaracteres(String str, char c) {
		int result = 0;
		
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == c) {
				result++;
			}
		}
		return result;
	}
	
    public static String  segundosParaHorario(long segundos) {
    	String result;
    	long horas = 0;
    	long min = 0;
    	long sec = 0;
    	
    	horas = (int)(segundos / 60);
    	min = segundos - (horas * 60);
    	sec = segundos - ((horas * 60) + (min * 60));
		NumberFormat formatter = new DecimalFormat("00");
    	result = formatter.format(horas) + ":" + formatter.format(min) + ":" + formatter.format(sec);
    	return result;
	}
	
    public static String  minutosParaHorario(int minutos) {
    	String result;
    	int horas = 0;
    	int min = 0;
    	
    	horas = (int)(minutos / 60);
    	min = minutos - (horas * 60);
		NumberFormat formatter = new DecimalFormat("00");
    	result = formatter.format(horas) + ":" + formatter.format(min);
    	return result;
	}
    
    
    public static int tempoEmMinutos (String hora) {
    	System.out.println("Byte.valueOf(hora.substring(0, 2)).byteValue() = " + Byte.valueOf(hora.substring(0, 2)).byteValue());
    	System.out.println("Byte.valueOf(hora.substring(3,5)).byteValue() = " + Byte.valueOf(hora.substring(3,5)).byteValue());    	
    	return (Byte.valueOf(hora.substring(0, 2)).byteValue() * 60 + Byte.valueOf(hora.substring(3,5)).byteValue());
    }

	public static String formatoMoeda(double valor) {
		String result;
		String tmpValor = String.valueOf(valor);
		if (tmpValor.indexOf('.') != -1) {
			String parteInteira = tmpValor.substring(0, tmpValor.indexOf('.'));
			String parteDecimal = tmpValor.substring(tmpValor.indexOf('.') + 1);
			if (parteDecimal.length() < 2) {
				parteDecimal = parteDecimal + "0";
			}
			result = parteInteira + "," + parteDecimal;
		} else {
			result = tmpValor + ",00";
		}
		return result;
	}

	@SuppressWarnings("deprecation")
	public static String formatoData(Date dt) {
		String result;
		result = dt.getDate() + "/" + ((dt.getMonth() + 1)<10?"0" + (dt.getMonth() + 1):(dt.getMonth() + 1))  + "/" + (dt.getYear() + 1900);
		System.out.println("Resultado da data: " + result);
		return result;
	}

	public static String sendGetURL (String urlPath) {
		String result = null;
		byte buf[] = new byte[4096];
		URL url;
		StringBuffer fos = new StringBuffer();
		try {
			url = new URL(urlPath);

			BufferedInputStream bis = new BufferedInputStream(url.openStream());

			while(bis.read(buf) != -1) {
				fos.append(buf);
			}
			bis.close();
			result = fos.toString();

		} catch (IOException e) {
			e.printStackTrace();
		}

		return result;
	}

    public void sendPostUrl (String pagina, ArrayList params) {
		try	{
			String stuff = null;
			String pagecontent = "";
			String parameters = "&message=hello+world&";
			java.net.URL url = new java.net.URL("http://horotimo.appspot.com/" + pagina);
			java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
			conn.setRequestMethod("POST");
			conn.setRequestProperty("Content-Length", "" + Integer.toString(parameters.getBytes().length));
			conn.setRequestProperty("Content-Language", "en-US"); 
			conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
			conn.setDoInput(true); 
			conn.setDoOutput(true); 
			conn.setUseCaches(false); 
			conn.setAllowUserInteraction(true);

			for (int i = 0; i < params.size(); i++) {
				conn.addRequestProperty(((String[])params.get(i))[0], ((String[])params.get(i))[1]);
			}
		
			java.io.DataOutputStream printout = new java.io.DataOutputStream (conn.getOutputStream ());
			printout.writeBytes (parameters);
			printout.flush ();
			printout.close ();
			java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream())); 
			while ((stuff = in.readLine()) != null)	{
					pagecontent += stuff; 
			}
			in.close(); 
			System.out.println("*************Pagina postada corretamente***********");
			System.out.println("Pagina = " + pagecontent);
		} catch (Exception e) {
			System.out.println("*************Pagina postada INcorretamente***********");
			e.printStackTrace();
		}
    }

    public static void sendGETUrl (String pagina) {
		try	{
			String stuff = null;
			String pagecontent = "";
			java.net.URL url = new java.net.URL(pagina);
			java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
			conn.setRequestMethod("GET");
			conn.setRequestProperty("Content-Language", "en-US"); 
			conn.setRequestProperty("Content-Type", "text/plain");
			conn.setDoInput(true); 
			conn.setDoOutput(true); 
			conn.setUseCaches(false); 
			conn.setAllowUserInteraction(true);

			java.io.DataOutputStream printout = new java.io.DataOutputStream (conn.getOutputStream ());
			java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream())); 
			while ((stuff = in.readLine()) != null)	{
					pagecontent += stuff; 
			}
			in.close(); 
			System.out.println("*************Pagina solicitada corretamente***********");
			System.out.println("Pagina = " + pagecontent);
		} catch (Exception e) {
			System.out.println("*************Pagina solicitada INcorretamente***********");
			e.printStackTrace();
		}
    }

    public static String sendGETUrl2 (String pagina, String method, String contentType) {
		String pagecontent = "";
    	try	{
			String stuff = null;

			java.net.URL url = new java.net.URL(pagina);
			java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
			conn.setRequestMethod(method);
			//conn.setRequestProperty("Content-Language", "en-US"); 
			//conn.setRequestProperty("Content-Type", contentType);
			//conn.setDoInput(true); 
			conn.setDoOutput(true); 
			conn.setUseCaches(true); 
			conn.setAllowUserInteraction(false);

			java.io.DataOutputStream printout = new java.io.DataOutputStream (conn.getOutputStream ());
			java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream())); 
			while ((stuff = in.readLine()) != null)	{
					pagecontent += stuff; 
			}
			in.close(); 
			System.out.println("*************Pagina solicitada corretamente***********");
			System.out.println("Pagina = " + pagecontent);
		} catch (Exception e) {
			System.out.println("*************Pagina solicitada INcorretamente***********");
			e.printStackTrace();
		}
		return pagecontent;
    }

    public static HashMap<String, String> parseMap(final String input) {
        final HashMap<String, String> map = new HashMap<String, String>();
        for (String pair : input.split("&")) {
            String[] kv = pair.split("=");
            map.put(kv[0], kv[1]);
        }
        return map;
    }
    
    public static long dateDiffInSeconds(Date d1, Date d2) {
 
    	long milliseconds1 = d1.getTime();
    	long milliseconds2 = d2.getTime();
    	long diff = milliseconds2 - milliseconds1;
    	long diffSeconds = diff / 1000;
    	//long diffMinutes = diff / (60 * 1000);
    	//long diffHours = diff / (60 * 60 * 1000);
    	//long diffDays = diff / (24 * 60 * 60 * 1000);
    	return diffSeconds;
    }

    public static String removeAcentuacao(String text) {  
    	if (text == null) {
            return text;
        }

        String result = text;
        char[] acentuados = new char[] { 'ç', 'á', 'à', 'ã', 'â', 'ä', 'é', 'è', 'ê', 'ë', 'í', 'ì', 'î', 'ï', 'ó', 'ò', 'õ', 'ô', 'ö', 'ú', 'ù', 'û', 'ü' };  

        char[] naoAcentuados = new char[] { 'c', 'a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u' };  

        for (int i = 0; i < acentuados.length; i++) {  
            result = result.replace(acentuados[i], naoAcentuados[i] );   
        }
        //System.out.println("result sem acentuacao:[" + result + "]");
        return result;
    }

    public static String hex(byte[] array) {
    	StringBuffer sb = new StringBuffer();
    	for (int i = 0; i < array.length; ++i) {
    		sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));       
    	}
    	return sb.toString();
	}

    public static String md5Hex (String message) {
    	try {
    		MessageDigest md = MessageDigest.getInstance("MD5");
    		return hex (md.digest(message.getBytes("CP1252")));
    	} catch (NoSuchAlgorithmException e) {
    	} catch (UnsupportedEncodingException e) {
    	}
    	return null;
	}

    public static String getGravatarHash(String email) {
    	String hash = md5Hex(email.toLowerCase());
    	return hash;
    }
}